package com.itlong.cloud.property.service;

import com.itlong.cloud.POJO.DTO.property.PropertyAutoWithdrawDTO;
import com.itlong.cloud.POJO.DTO.property.PropertyWithdrawGetDTO;
import com.itlong.cloud.POJO.PO.PropertyAutoWithdrawCashSetInfoPO;
import com.itlong.cloud.POJO.VO.property.PropertyBalanceVO;
import com.itlong.cloud.POJO.VO.property.PropertyProjectAmountVO;
import com.itlong.cloud.POJO.VO.property.PropertyWithdrawVO;
import com.itlong.cloud.utils.page.Page;

import java.math.BigDecimal;

/**
 * <desc>
 *      物业-提现服务-提现管理接口。
 * <desc/>
 *
 * @createDate 2018/09/21.
 */
public interface IPropertyWithdrawService {

    /**
     * <desc>
     *      物业提现信息分页查询
     * <desc/>
     *
     * @param propertyAccountGetDTO 分页查询参数
     * @return
     * @author Qiang.S
     * @createDate 2018-09-21
     */
      Page<PropertyWithdrawVO> getWithdrawByPage(PropertyWithdrawGetDTO propertyAccountGetDTO) throws Exception;

    /**
     * <desc>
     *      查询可提现余额
     * <desc/>
     *
     * @param projectId 项目编号
     * @return PropertyBalanceVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/23
     */
    PropertyBalanceVO getBalance(String projectId) throws Exception;

    /**
     * <desc>
     *      查询第三方手续费
     * <desc/>
     *
     * @return PropertyBalanceVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/10/31
     */
    PropertyBalanceVO getThirdPartyPaymentInfo() throws Exception;

    /**
     * <desc>
     *      判断支付密码是否正确
     * <desc/>
     *
     * @param projectId 项目编号
     * @param payPassword 支付密码
     * @return Integer
     * @author Qiang.S
     * @createDate 2018/09/23
     */
    Integer checkPayPassword(String projectId, String payPassword) throws Exception;

    /**
     * <desc>
     *      判断第三方支付中银联状态是否正常
     * <desc/>
     *
     * @return Integer
     * @author Qiang.S
     * @createDate 2018/10/09
     */
    Integer checkUnionpayStatus() throws Exception;

    /**
     * <desc>
     *      自动提现设置
     * <desc/>
     *
     * @param propertyAutoWithdrawDTO 自动提现信息
     * @return MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/23
     */
    Integer setAutoWithdraw(PropertyAutoWithdrawDTO propertyAutoWithdrawDTO) throws Exception;

    /**
     * <desc>
     *      查询自动提现信息
     * <desc/>
     *
     * @param projectId 项目编号
     * @return MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/24
     */
    PropertyAutoWithdrawCashSetInfoPO getAutoWithdraw(String projectId) throws Exception;

    /**
     * <desc>
     *      提现
     * <desc/>
     *
     * @param projectId 项目编号
     * @param bankCardId 银行卡ID
     * @param amount 提现金额
     * @param loginUserId 操作人ID
     * @return MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/24
     */
    BigDecimal withdraw(String projectId, String bankCardId, String amount, String loginUserId) throws Exception;

    /**
     * <desc>
     *      查询项目财务状态
     * <desc/>
     *
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2018/10/24
     */
    String getFinanceStatusByProjectId(String projectId) throws Exception;

    /**
     * <desc>
     *      查询项目可提现金额
     * <desc/>
     *
     * @param projectId 项目编号
     * @return MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/24
     */
    PropertyProjectAmountVO getProjectAmountInfo(String projectId) throws Exception;

    /**
     * <desc>
     *      自动提现
     * <desc/>
     *
     * @return MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/26
     */
    void doAutoWithdraw() throws Exception;

}
